<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>事件处理</title>
</head>

<body>

    <div id="app">
        <h3>事件处理函数 v-on 或者 @</h3>
        <button v-on:click="say">Say {{msg}}</button>
        <!-- $event 代表的是原生的DOM事件 -->
        <button @click="warn('王佳伟',$event)">Warn</button>
        <hr>
        <h3>事件修饰符</h3>
        <!-- 1. 防止单击事件继续传播 -->
        <!-- 如果不加 .stop ，点击按钮之后，执行doThis函数，执行完后，todo函数也会被执行，也就是说，会先弹出doThis，然后弹出todo -->
        <div @click="todo">
            <button @click="doThis">单击事件会继续传播</button>
        </div>
        <br>
        <div @click="todo">
            <!-- .stop 的作用是阻止事件的传播，此时，只会弹出 doThis -->
            <button @click.stop="doThis">单击事件会组织继续传播</button>
        </div>
        <br>
        <!-- 2. 阻止时间默认行为 -->
        <a href="https://www.cnblogs.com/wjw1014/" @click.prevent="doStop">我的博客园博客</a>
        <br><br>
        <!-- 3. 点击事件只会触发一次 -->
        <button @click.once="doOnly">点击只会触发一次：{{num}}</button>
        <hr>
        <h3>按键修饰符或按键码</h3>
        <!-- 按下回车键执行 -->
        <input type="text" @keyup.enter="keyEnter"><br><br>
        <!-- 按下空格键执行 -->
        <input type="text" @keyup.space="keySpace"><br><br>
        <!-- 其实还可以使用按键码，比如13也是回车，自己查 -->
        <input type="text" @keyup.13="keyDown">
        <!-- 按键码查询地址： https://www.bejson.com/othertools/keycodes/ -->

    </div>

    <script src="./node_modules/vue/dist/vue.js"></script>

    <script>
        new Vue({
            el: '#app',
            data: {
                msg: '你好，王佳伟',
                num: 0
            },
            // 定义事件处理函数
            methods: {
                say: function (event) {
                    // event 代表的是DOM的原生事件，vue会自动的而将它传入进来。
                    alert(this.msg)
                    alert(event.target.innerHTML)
                },
                warn: function (name, event) {
                    // 如果说函数有多个参数，而又需要使用原生事件，则需要使用$event作为参数传入
                    alert(name + '  ' + event.target.tagName)
                },
                doThis: function () {
                    alert("doThis ...")
                },
                todo: function () {
                    alert("todo ...")
                },
                doStop: function () {
                    alert("doStop ... href 默认行为已被阻止！")
                },
                doOnly: function () {
                    this.num++
                },
                keyEnter: function () {
                    alert("当前按的是回车键！")
                },
                keySpace: function () {
                    alert("当前按的是空格键！")
                },
                keyDown:function(){
                    alert("当前按键码是13！")
                }
            },
        })
    </script>

</body>

</html>